Архитектура программы
Программа построена по принципу микросервисной архитектуры и может быть разделена на основные сервисы и сервисы, работающие в зоне (подробнее про зоны см. разделе Руководства пользователя).
Каждый компонент программы представляет собой DEB-пакет, который размещен в контейнере. Таким образом, программа – это набор взаимодействующих между собой контейнеров, который может быть развернут в любой среде, содержащей Docker Engine, Docker Compose и СУБД.
Основные сервисы (Main services): включают компоненты: Core Service (WAS, EXS, Web UI, OpenBAO), Core Service Database, Asset Manager, Asset Manager Database, Reflector, Module registry.
Сервисы зоны (Zone services): Keeper, Keeper storage, Module.
Схематично архитектура программы приведена на рисунке 1.

Рисунок 1 Архитектура программы
Приведем описание сервисов и компонентов:
Core Service – основной сервис, отвечающий за бизнес-логику и предоставление API для web-интерфейса. Содержит функциональность по управлению и настройке модулей.
В составе Core Service выделены следующие компоненты:
- WAS (Web Application Service) – компонент, реализующий основной функционал взаимодействия бэкенда (сервера) по REST API с UI и другими сервисами.
- EXS (Executor Service) – компонент, отвечающий за выполнение автоправил и бизнес-логики.
- Web UI – компонент, отвечающий за пользовательский интерфейс.
- OpenBao – защищенное хранилище секретов.
Core Service Database – база данных, в которой хранятся данные сервисов WAS и EXS.
Asset Manager – сервис, отвечающий за примитивные операции с активами – вариации CRUD, обогащение, установка связей, простейшие фильтры.
Reflector – компонент, упрощающий взаимодействие ключевых сервисов с киперами в закрытых зонах.
Keeper – компонент, реализующий оркестрацию компонентов (module).
Keeper storage – хранилище данных, в котором хранится информация о модулях и их запусках.
Module – компонент, представленный в форме контейнера, выполняющий определенную функциональность по поиску ассетов или сбору данных об ассетах (хост, внешний адрес, учетная запись, сетевая служба, программное обеспечение, сеть, зона).
Module registry – хранилище (registry) образов контейнеров модулей.